1. Field of the Invention
The present invention relates to communication between computer systems. In one example, the present invention relates to methods and apparatus for allowing effective data transfer between computer systems over an input/output (I/O) bus interface.
2. Description of Related Art
Communication between processors on different computers such as servers and clients is typically achieved over a network interface. Each computer may include a network interface card that implements a standard network technology such as Token Ring, Ethernet, or InfiniBand or a proprietary technology such as Quadrics and Myrinet. Communication between computers such as servers and clients requires additional hardware including network interface cards, physical links, and network nodes. Different network technologies have different stacks that include the physical, link, network, and transport layers.
However, network communication can often be inefficient, unreliable, and insecure. Inefficiency is introduced by network interface cards, links, and network nodes. Processing at a network interface card associated with a network stack often delays communications between processors on different computers. For example, appropriate Transport Control Protocol (TCP) and Internet Protocol (IP) headers and fields are provided by a network interface card for data transmitted onto a network. The headers and fields then have to be removed by a network interface card upon receiving the data. Networks include links and network nodes such as switches and routers that may introduce substantial delay into transmissions.
Network communication can also be unreliable. Network interface cards can often fail, leading to connection downtime or inefficient redundancy schemes. Having network routers and switches connecting servers can also increase the number of possible failure points. Furthermore, a large number of redundant links are often needed to connect network entities. Communicating over networks such as Ethernet may also lack security. Although cryptographic algorithms are often used to communicate with external entities such as entities on an external network connected to the local area network, communication within the local area network is typically insecure.
Consequently, it is desirable to provide methods and apparatus for improving communication between processors in separate computer systems.